package com.muyu.payment.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.muyu.payment.domain.UserBalance;


import java.math.BigDecimal;

/**
 * 用户余额服务接口
 *
 * @author muyu
 * @date 2025-01-27
 */
public interface UserBalanceService extends IService<UserBalance> {

    /**
     * 根据用户ID查询余额
     *
     * @param userId 用户ID
     * @return 用户余额信息
     */
    UserBalance getBalanceByUserId(Long userId);

    /**
     * 初始化用户余额
     *
     * @param userId 用户ID
     * @param userName 用户账号
     * @return 用户余额信息
     */
    UserBalance initUserBalance(Long userId, String userName);

    /**
     * 增加用户余额
     *
     * @param userId 用户ID
     * @param amount 增加金额
     * @param transactionType 交易类型
     * @param orderNo 关联订单号
     * @param description 交易描述
     * @return 是否成功
     */
    boolean increaseBalance(Long userId, BigDecimal amount, Integer transactionType, String orderNo, String description);

    /**
     * 减少用户余额
     *
     * @param userId 用户ID
     * @param amount 减少金额
     * @param transactionType 交易类型
     * @param orderNo 关联订单号
     * @param description 交易描述
     * @return 是否成功
     */
    boolean decreaseBalance(Long userId, BigDecimal amount, Integer transactionType, String orderNo, String description);


    /**
     * 检查用户余额是否充足
     *
     * @param userId 用户ID
     * @param amount 需要金额
     * @return 是否充足
     */
    boolean checkBalanceSufficient(Long userId, BigDecimal amount);
}